package com.heima.controller.web.SkuWeb;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;


import com.heima.controller.Result;
import com.heima.pojo.SkuClass;
import com.heima.pojo.vo.Sku.SkuClassDto;
import com.heima.service.SkuClassService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.stream.Collectors;


@Slf4j
@RestController
@RequestMapping("/api/vm-service/skuClass")
public class SkuClassController {

    @Autowired
    private SkuClassService skuClassService;

    /**
     * 所有的所有商品类型
     * @param pageIndex
     * @param pageSize
     * @param className
     * @return
     */
    @GetMapping("/search")
    public Result<List<SkuClassDto>> findSkuType(Integer pageIndex, Integer pageSize, String className) {
        log.info("所有的所有商品类型，第{}页，每页{}条", pageIndex, pageSize);
        //健壮性
        if (pageSize == null) {
            pageSize = 100000;
        }
        if (pageIndex == null) {
            pageIndex = 1;
        }
        //创建分页对象
        Page<SkuClass> skuClassPage = new Page<>(pageIndex, pageSize);
        //创造条件对象
        LambdaQueryWrapper<SkuClass> skuQw = new LambdaQueryWrapper<>();
        //创造条件 进行模糊查询
        skuQw.like(className != null, SkuClass::getClassName, className);
        //进行条件查询并且返回条件对象
        Page<SkuClass> page = skuClassService.page(skuClassPage, skuQw);
        //获取list
        List<SkuClass> records = page.getRecords();

        List<SkuClassDto> collect = records.stream().map((record) -> {
            //属性复制
            SkuClassDto skuClassDto = new SkuClassDto();
            BeanUtils.copyProperties(record,skuClassDto);
            return skuClassDto;
        }).collect(Collectors.toList());
        return Result.success(collect);
    }
}
